package com.foreknow.demo11;

import com.foreknow.demo8.Student;

import java.util.ArrayList;
import java.util.List;

/**
 * 集合(容器)
 * Collection接口用来存放一组称为元素的对象，一个Collection中可以放不同类型的数据，它是Set接口和List接口的父接口。其中元素是否有特定的顺序以及是否允许重复，取决于它的实现类。
 * (1) 子接口Set：无序的集合，不允许重复。
 * Set接口的实现类：HashSet　
 * (2) 子接口List：有序的集合，允许重复。
 * List接口的实现类：ArrayList(常用)、LinkedList
 *
 * ArrayList中常用的方法
 * boolean add(E e)：将指定的元素添加到此列表的尾部
 * E get(int index)：返回此列表中指定位置上的元素
 * int size()：返回此列表中的元素数
 * E remove(int index)：移除此列表中指定位置上的元素
 */
public class CollectionDemo {
    public static void main(String[] args) {
        Student student = new Student();
        student.setId(1);
        student.setName("tom1");
        student.setAge(10);

        Student student1 = new Student();
        student1.setId(2);
        student1.setName("tom2");
        student1.setAge(20);
        // 创建一个集合容器
        // 可以使用泛型<>来约束集合中的元素的类型
        List<Student> list = new ArrayList<>();
        // 向集合中添加元素 注意：集合中只能存对象(Object)
        list.add(student);
        list.add(student1);
        // 从集合中获取元素(Student对象)
        Student student2 = list.get(0);
        System.out.println("-----------------------------------------------------");
        // 遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getName());
        }
        System.out.println("-----------------------------------------------------");
        // foreach
        for (Student stu : list) {
            System.out.println(stu.getName());
        }

    }
}
